from sklearn.metrics import average_precision_score

# 假设有 3 个类别
y_true = [
    [1, 0, 0],  # 第一个样本的真实标签
    [0, 1, 0],  # 第二个样本的真实标签
    [0, 0, 1]   # 第三个样本的真实标签
]

y_scores = [
    [0.8, 0.1, 0.1],  # 第一个样本的预测分数
    [0.2, 0.7, 0.1],  # 第二个样本的预测分数
    [0.1, 0.3, 0.6]   # 第三个样本的预测分数
]

# 计算每个类别的 Average Precision (AP)
ap_per_class = []
for i in range(len(y_true[0])):
    ap = average_precision_score([true[i] for true in y_true], [score[i] for score in y_scores])
    ap_per_class.append(ap)

# 计算 mAP
mAP = sum(ap_per_class) / len(ap_per_class)
print(f"mAP: {mAP:.2f}")